package UdpNetwork;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.nio.charset.StandardCharsets;
/**
 * @Author Zhang Chao
 * @Date 2021/6/1 21:54
 * @Version 1.0
 */
public class ServerThread implements Runnable{
    @Override
    public void run() {
        try {
            // 创建一个 ServerSocket ，并指定端口号，注意：客户端的端口号要和服务器端的一致
            DatagramSocket datagramSocket = new DatagramSocket(9091);
            //////////////////////////接收消息/////////////////////////
            // 将接收的信息转换为字节数组，便于存入 datagrampacket
            byte[] data = new byte[1024];
            // 使用datagrampacket进行数据封装
            DatagramPacket datagramPacket = new DatagramPacket(data, 0, data.length);
            // 接收数据
            datagramSocket.receive(datagramPacket);
            // 接收的信息会存入 byte数组
            // 使用接收的信息进行 业务 逻辑处理
            String strReceiveMsg = new String(data, 0,datagramPacket.getLength(),"UTF-8");
            System.out.println("服务器接收消息：" + strReceiveMsg);

            ////////////////////发送消息////////////////////////

            // 准备需要发送的数据
            String strServerMsg = "hello,I am 服务器端";
            // 将发送的信息转换为字节数组，便于存入 datagrampacket
            byte[] data1 = strServerMsg.getBytes(StandardCharsets.UTF_8);
            // 使用datagrampacket进行数据封装
            DatagramPacket datagramPacket1 = new DatagramPacket(data1, 0, data1.length,datagramPacket.getSocketAddress());
            // 发送数据
            datagramSocket.send(datagramPacket1);
            System.out.println("服务器端发送消息：" + strServerMsg);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
